package com.zmn.oms.third.zhimi.entity;

import lombok.Data;

import java.util.Date;
import java.util.List;

/**
 * 类描述：
 *
 * @author lhl
 * @date 2020/04/24 21:49
 */
@Data
public class ZhimiOrderExtend {
    /**
     * 啄木鸟订单ID
     */
    private Long orderId;
    /**
     * 渠道订单ID（智米服务工单号）
     */
    private String outerId;
    /**
     * 订单最初的服务类型：1:维修；2:退机; 3:换机；4：检测；7：安装；8：勘测
     * 智米推送的订单信息中使用的服务类型
     */
    private Integer originalServiceType;
    /**
     * 当前服务类型：1:维修；2:退机; 3:换机；4：检测；7：安装；8：勘测
     * 智米订单有可能发生服务类型降级：退机->换机；换机->维修；等
     */
    private Integer serviceType;
    /**
     * 仅以换代修（不走维修）1:否，2:是， 当serviceType=1（维修单）时，该字段有效
     */
    private Integer replaceOnly;
    /**
     * 是否用料 1:否，2:是
     */
    private Integer useParts;
    /**
     * 整机物料编码
     */
    private String mainPartCode;
    /**
     * 机头物料编码
     */
    private String headPartCode;
    /**
     * 是否是空调订单 1：否，2：是
     */
    private Integer acFlag;
    /**
     * SN码
     */
    private String sn;
    /**
     * 新SN码，仅换机时存在
     */
    private String newSn;
    /**
     * 购机时间 ，仅维修时存在
     */
    private String buyDate;
    /**
     * 物料编码（机器的机型编码）
     */
    private String productCode;
    /**
     * 物料名称
     */
    private String productName;
    /**
     * 三级机型编码
     */
    private String thirdModelCode;
    /**
     * 保修类型
     */
    private Integer warranty;
    /**
     * 保修开始时间
     */
    private String warrantyBeginTime;
    /**
     * 保修结束时间
     */
    private String warrantyEndTime;
    /**
     * 故障信息
     */
    private List<Fault> faults;
    /**
     * 配件信息
     */
    private List<Part> parts;

    /**
     * 勘测结果
     */
    private Survey survey;
    /**
     * 检测结果
     */
    private Detection detection;
    /**
     * 换机类型
     */
    private Exchange exchange;
    /**
     * 退货类型
     */
    private Retund retund;
    /**
     * 收货地址信息
     */
    private PostAddress postAddress;
    /**
     * 旧件返厂物流信息
     */
    private ReturnFactoryExpress returnFactoryExpress;
    /**
     * 录入时间
     */
    private Date createTime;
    /**
     * 标识是否存在需要查询快递信息的智米配件（师傅申请的配件） 2:是;  ^2(非2):否
     */
    private Integer expressWaiting;

    /**
     * 故障信息
     */
    @Data
    public static class Fault {
        /**
         * 故障名称
         */
        private String name;
        /**
         * 故障编码
         */
        private String code;
    }

    /**
     * 配件信息
     */
    @Data
    public static class Part {
        /**
         * 配件名称
         */
        private String name;
        /**
         * 配件编码
         */
        private String code;
        /**
         * 配件数量
         */
        private Integer number;
        /**
         * 申请时间
         */
        private String applyTime;
        /**
         * 快递单号
         */
        private String expressCode;
        /**
         * 快递公司名称
         */
        private String expressCompany;
        /**
         * 发货时间
         */
        private String expressTime;
    }

    /**
     * 勘测结果
     */
    @Data
    public static class Survey {
        /**
         * 是否满足安装 0：不满足，1：满足
         */
        private Integer state ;
        /**
         * 若不满足安装，不满足安装的原因
         *  备注：上线时使用的自定义输入内容，一周后按智米的接口要求改用固定原因的编码了。2020-05-21 by lhl
         */
        private String remark;
    }

    /**
     * 检测结果
     */
    @Data
    public static class Detection {
        /**
         * 检测类型有：DAP；DOA
         */
        private Integer type;
        /**
         * 检测结果
         */
        private String remark;
    }

    /**
     * 换机类型
     */
    @Data
    public static class Exchange {
        /**
         * 换机类型有：DAP；DOA；多维换机
         * 值为0，表示不予换机
         */
        private Integer type;
    }

    /**
     * 退货类型
     */
    @Data
    public static class Retund {
        /**
         * 退货类型有：7天无理由、质量问题、发错货退货
         *  值为0，表示不予退货
         */
        private Integer type;
    }

    /**
     * 邮寄地址
     */
    @Data
    public static class PostAddress {
        /**
         * 收件人姓名
         */
        private String name;
        /**
         * 收件人联系电话
         */
        private String phone;
        /**
         * 收货地址
         */
        private String address;
    }

    /**
     * 邮寄地址
     */
    @Data
    public static class ReturnFactoryExpress {
        /**
         * 快递单号
         */
        private String expressCode;
        /**
         * 快递公司编号
         */
        private String expressCompanyCode;
        /**
         * 快递公司名称
         */
        private String expressCompany;
        /**
         * 发货时间
         */
        private String expressTime;
    }
}
